package br.com.conhecimento.ejb.server.impl;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.interceptor.Interceptors;

import org.jboss.ejb3.annotation.RemoteBinding;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor;

import br.com.conhecimento.ejb.client.IEjbConhecimentoSessionFacade;
import br.com.conhecimento.ejb.client.vo.funcionalidade.AutenticacaoUsuarioVO;
import br.com.conhecimento.ejb.client.vo.funcionalidade.CadastroDemandaHistoricoVO;
import br.com.conhecimento.ejb.client.vo.funcionalidade.CadastroDemandaVO;
import br.com.conhecimento.ejb.client.vo.funcionalidade.CadastroParametrizacaoVO;
import br.com.conhecimento.ejb.client.vo.funcionalidade.ConsultaComboVO;
import br.com.conhecimento.ejb.client.vo.funcionalidade.ConsultaDemandaHistoricoVO;
import br.com.conhecimento.ejb.client.vo.funcionalidade.ConsultaDemandaVO;
import br.com.conhecimento.ejb.client.vo.funcionalidade.ConsultaParametrizacaoVO;
import br.com.conhecimento.ejb.service.AutenticacaoService;
import br.com.conhecimento.ejb.service.DemandaService;
import br.com.conhecimento.ejb.service.DemandaUtilService;
import br.com.conhecimento.ejb.service.ParametrizacaoService;


@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
@RemoteBinding(jndiBinding = "EjbConhecimento/remote")
public class EjbConhecimentoSessionFacadeImpl implements IEjbConhecimentoSessionFacade {

	
	@Autowired
	private DemandaUtilService demandaUtilService;
	
	@Autowired
	private DemandaService demandaService;
	
	@Autowired
	private AutenticacaoService autenticacaoService;
	
	@Autowired
	private ParametrizacaoService parametrizacaoService;
	
	public EjbConhecimentoSessionFacadeImpl() {
		
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaComboVO consultarComboPrioridades() {
		return demandaUtilService.consultarComboPrioridades();
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaComboVO consultarComboStatus() {
		return demandaUtilService.consultarComboStatus();
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaComboVO consultarComboFlag() {
		return demandaUtilService.consultarComboFlag();
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaComboVO consultarComboPendencia() {
		return demandaUtilService.consultarComboPendencia();
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaComboVO consultarComboReceita() {
		return demandaUtilService.consultarComboReceita();
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaComboVO consultarComboCliente(Integer idCliente) {
		return demandaUtilService.consultarComboCliente(idCliente);
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaComboVO consultarComboUsuarios() {
		return demandaUtilService.consultarComboUsuarios();
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public AutenticacaoUsuarioVO autenticarUsuario(
			AutenticacaoUsuarioVO autenticacaoUsuarioVO) {
		return autenticacaoService.autenticarUsuario(autenticacaoUsuarioVO);
	}
	
	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public CadastroDemandaVO cadastrarDemanda(
			CadastroDemandaVO cadastroDemandaVO) {
		return demandaService.cadastrarDemanda(cadastroDemandaVO);
	}
	
	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public CadastroDemandaHistoricoVO cadastrarDemandaHistorico(
			CadastroDemandaHistoricoVO cadastroDemandaHistoricoVO) {
		return demandaService.cadastrarDemandaHistorico(cadastroDemandaHistoricoVO);
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public CadastroParametrizacaoVO cadastrarParametrizacao(
			CadastroParametrizacaoVO cadastroParametrizacaoVO) {
		return parametrizacaoService.cadastrarAtualizarParametrizacao(cadastroParametrizacaoVO);
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaParametrizacaoVO consultarParametrizacaoUsuario(
			ConsultaParametrizacaoVO consultaParametrizacaoVO) {
		return parametrizacaoService.consultarParametrizacao(consultaParametrizacaoVO);
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaDemandaHistoricoVO consultarHistoricoDemanda(
			ConsultaDemandaHistoricoVO consultaDemandaHistoricoVO) {
		return demandaService.consultarHisotirco(consultaDemandaHistoricoVO);
	}

	@Override
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public ConsultaDemandaVO consultarDemandas(
			ConsultaDemandaVO consultaDemandaVO) {
		return demandaService.consultarDemandas(consultaDemandaVO);
	}
	
}
